package org.dromara.config;

import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

@Configuration
public class SshConfig {
    
    /**
     * 创建SFTP通道
     */
    public ChannelSftp createSftpChannel(String host, int port, String username, String password) throws JSchException {
        JSch jsch = new JSch();
        
        // 创建会话
        Session session = jsch.getSession(username, host, port);
        session.setPassword(password);
        
        // 配置会话属性
        Properties config = new Properties();
        config.put("StrictHostKeyChecking", "no"); // 不检查主机密钥
        session.setConfig(config);
        
        // 连接会话
        session.connect();
        
        // 打开SFTP通道
        return (ChannelSftp) session.openChannel("sftp");
    }
    
    /**
     * 关闭SFTP连接
     */
    public void closeChannel(ChannelSftp channel) throws JSchException {
        if (channel != null) {
            try {
                channel.disconnect();
            } catch (Exception e) {
                // 处理关闭异常
            }
            
            Session session = channel.getSession();
            if (session != null && session.isConnected()) {
                session.disconnect();
            }
        }
    }
}
